<?php

class BasesfGuardFormRegister extends BaseFormDoctrine
{
	public function configure()
	{
		$this->setWidgets(array(
		 'username' => new sfWidgetFormInputText(array(), array()),
		 'password' => new sfWidgetFormInputPassword(array(), array('value'=>"")),
		 'password_again' => new sfWidgetFormInputPassword(array(), array()),
		 'firstname' => new sfWidgetFormInputText(array(),array()),
		 'lastname' => new sfWidgetFormInputText(array(), array()),
		 'additional' => new sfWidgetFormTextarea(array(), array()),
		 'image' => new sfWidgetFormInputFileEditable(array('file_src'=> sfConfig::get('sf_upload_dir').'/avatars/'.$this->getObject()->getImage(),
															 'is_image'  => true, 															 
															 'delete_label' => 'удалить изображение',
															 'template'  => ($this->getObject()->getImage())	?	'<div><img width="100px" src="/uploads/avatars/thumbnail_100_100/'.$this->getObject()->getImage().'" /><br />%input%<br /><br />%delete% %delete_label%</div>'
															 :	'<div>%input%</div>'), array()),
															 ));

															 $this->widgetSchema->setLabel('firstname','Имя*:');
															 $this->widgetSchema->setLabel('lastname','Фамилия*:');
															 $this->widgetSchema->setLabel('additional','О себе:');
															 $this->widgetSchema->setLabel('username','E-mail(логин)*:');
															 $this->widgetSchema->setLabel('password','Пароль*:');
															 $this->widgetSchema->setLabel('password_again','Повторить пароль*:');
															 $this->widgetSchema->setLabel('image','Аватар:');
															 	
															 $this->setValidators(array(
		 'firstname' => new sfValidatorString(array('min_length'=>2, 'max_length'=>20), array('min_length' => 'Длина имени должна быть более 2х символов','max_length' => 'Длина имени должна быть менее 20х символов', 'required'=>'Это поле обязательно для ввода')),
		 'lastname' => new sfValidatorString(array('min_length'=>2, 'max_length'=>20), array('min_length' => 'Длина фамилии должна быть более 2х символов','max_length' => 'Длина фамилии должна быть менее 20х символов', 'required'=>'Это поле обязательно для ввода')),
		 'additional' => new sfValidatorString(array('required'=>false),array()),
		 'password' => new sfValidatorString(array('min_length'=>6, 'max_length'=>20) ,array('min_length'=>'Длина пароля от 6х символов','max_length'=>'Длина пароля до 20 символов','required'=>'Это поле обязательно для ввода')),
		 'password_again' => new sfValidatorString(array(), array('required'=>'Это поле обязательно для ввода')),
		 'username' => new sfValidatorAnd(  array(new sfValidatorEmail(array(),array('invalid'=>'Введите корректный e-mail')), 
															 new sfValidatorDoctrineUnique(array('model'=>'sfGuardUser',
												  									  'column'=>'username'),
															 array('invalid'=>'Такой e-mail уже использован для регистрации')
															 )
															 )
															 ),
		 'image' => new sfValidatorFile(array(
		 'mime_types'=>'web_images',
		 'max_size'=>1048576,		 
		 'required'=>false,
		 'path'=>sfConfig::get('sf_upload_dir').DIRECTORY_SEPARATOR.'avatars'.DIRECTORY_SEPARATOR),array('mime_types'=>'Поддерживаемые форматы - gif, jpg, png','max_size'=>'Найбольший размер загружаемой картинки - 1 МБ'))
															 ));
															 $this->validatorSchema->setPostValidator(new sfValidatorSchemaCompare('password', sfValidatorSchemaCompare::EQUAL, 'password_again',array(),array('invalid'=>'Пароли должны совпадать')));

															 $this->widgetSchema->setNameFormat('register[%s]');
	}

	public function getModelName()
	{
		return 'sfGuardUser';
	}
}
